#1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素

# def ins(a):
#     b=[]
#     for i in range(len(a)):
#         if i%2!=0:
#             b.append(a[i])
#     return b
# print(ins((1,2,3,4,5,6,7,8)))



#2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5

# def ins(a):
#     if len(a)>5:
#         print("长度大于5")
#     elif len(a)<5:
#         print("长度小于5")
#     else:
#         print("长度等于5")
# ins("asdfgh")
# ins([1,2,3,4,5])
# ins((1,2,3,4,5))


#3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果

# def ins(a:str):
#     number = 0
#     character = 0
#     space = 0
#     other = 0
#     for i in a:
#         if i in "0123456789":
#             number=number+1
#         elif (i>="a" and i<="z") or (i>="A" and i<="Z"):
#             character=character+1
#         elif i in " ":
#             space=space+1
#         else:
#             other=other+1
#     print(f"数字有{number}个，字母有{character}个，空格有{space}个，其他有{other}个")
# ins("asd   123 %")


#4、写函数,接收两个数字参数,返回return较大的那个数字
# def ins(input_01,input_02):
#     if input_01>input_02:
#         return input_01
#     elif input_01<input_02:
#         return input_02
#     else:
#         print("两个数字相等")
#
# print(ins(11,22))




# #5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# def cacluate(*args):
#     return args
#
# print(cacluate(1, 2, 3123, 123, "asd", [1, 123], {1, 23, 2}, {"name": "suki"}))


#6、写函数, 接收字符串参数, 返回一个元组
# 元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def ins(a:str)->tuple:
#     capital_letter = 0
#     lower_letters = 0
#
#     for i in range(len(a)):
#         if a[i]>="a" and a[i]<="z":
#             lower_letters=lower_letters+1
#         elif a[i]>="A" and a[i]<="Z":
#             capital_letter=capital_letter+1
#     return capital_letter,lower_letters
# print(ins("asdasdasAAD"))  #(3, 8)



#7、写函数, 接收一个列表(包含30个1~100之间的随机整形数)和一个整形数k, 返回一个新列表.
#将列表下标k之前对应的元素逆序;
#将下标k及之后的元素逆序;
import random

# def ins(list1:list,k:int)->list:
#     num=0
#     if len(list1)==30:
#         for i in list1:
#             if i>=1 and i<=100:
#                 num=num+1
#         if num==30:
#             list2=list1[:k][::-1]
#             list3=list1[k:][::-1]
#             return list2+list3
#         else:
#             return "列表list1中有不在1-100区间内的数"
#     else:
#         return "数量不够30个"
#
# a = [random.randint(1,100)  for i in range(30)]
# print(ins(a,5))




#8、编写函数，输入参数x和n，
# 计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值
#x=3,n=5      3+33(3*10+3)+333(3*100+3)+3333+33333

# def ins(x,n):
#     a = x   #a=3
#     sum=0
#     for i in range(1,n+1):
#         sum = sum + x
#         if i ==n:
#             print(f"{x}={sum}",end="\n")
#         else:
#             print(f"{x}",end="+")
#         x = x*10+a
#     print(sum)
#ins(3,5)



#9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址

# def ins(name:str,age:int,address:str,sex:str="男"):   #有默认值的放后面
#     return f"您输入的名字：{name}，年龄：{age}，地址：{address}，性别：{sex}"
#
# print(ins("zkx",18,"beijing"))
# print(ins(age=19,name="abc",address="辽宁"))


#动态传参!!!!!不能直接sum，要循环相加！！！
#10、写函数,接收n个数字,返回这些数字的和(动态传参!!!!!不能直接sum，要循环相加！！！)
# def ins(*numbers):
#     sum=0
#     for i in numbers:
#         sum=sum+i
#     return sum
#
# print(ins(1,2,3,4))


#11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict)
# 将每个对象的每个元素都加到args元组或kwargs(字典dict)里
#
# def ins(*args,**kwargs):
#     print(args)
#     print(kwargs)
#
# ins("啦啦啦",[1,2,3,4],(1,2,3,4),{1,2,3,4},姓名="张三",年龄=18)



#12、写函数,把传过来的列表中每一个元素都用"_"拼接,并返回
# def ins(a):
#     sum=""
#     for i in a:
#         i=str(i)+"_"
#         sum=sum+i
#     return sum[:len(sum)-1]
#
# print(ins([1,2,3,4]))


#13、写函数,传入一个数字,返回这个数的阶乘。示例：1x2x3
# def ins(n):
#
#     a=1
#     for i in range(1,n+1):
#         a=i*a
#     return a
#
# print(ins(3))


#14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
# def ins(): #方法一
#     a = ["黑桃","红心","梅花","方块"]
#     b = ["A"]+[str(i)  for i in range(2,11)]+["J","Q","K"]
#     c = [(aaa,bbb) for aaa in a   for bbb in b]
#     print(c)
#     print(len(c))
#
# ins()

# def ins():    #方法二
#     a =[]
#     for key in ["黑桃","红心","梅花","方块"]:
#         for value in ("A",2,3,4,5,6,7,8,9,10,"J","Q","K"):
#             a.append((key,value))
#     return a
# print(ins())


#15、编写函数，求1+2+3+…N的和

# def ins(a:int)->int:
#     number = 0
#     for i in range(1,a+1):
#         number=number+i
#     print(number)
#
# ins(3)

#16、编写一个函数，求多个数中的最大值
# def ins(*a):
#     max_01 = a[0]
#     for i in a:
#         if i>max_01:
#             max_01=i
#     print(max_01)
# ins(110,45)

#17、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# def ins(a:str):
#     b=""
#     for i in a:
#         if (i>="a" and i<="z") or (i>="A" and i<="Z"):
#             b=b+i
#     print(b)
# ins("1as23d")


#18、写一个函数，求多个数的平均值
# def ins(*a):
#     b=sum(a)/len(a)
#     print(b)
# ins(1,2,3,4)


#19、写一个自己的"len"函数，统计指定序列中元素的个数
# def len(a):
#     b=0
#     for i in a:
#         b=b+1
#     print(b)
#
# len({"name":"张三","age":19})



#20、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
# def ins(x):
#     a=[]
#     for i in range(len(x)):
#         if i%2!=0:
#             a.append(x[i])
#     return a
#
# print(ins([1,2,3,4,5]))


#21、水仙花数：个位、十位、百位的立方加在一起等于数的本身
# 153=1^3+5^3+3^3
# def ins():    #方法一
#     for i in range(100,1000):
#         a=i//100
#         b=(i//10)%10
#         c=i%10
#         d=a**3+b**3+c**3
#         if d==i:
#             print(d)
# ins()
#
# def ins():    #方法二
#     for i in range(100,1000):
#
#         if int(str(i)[0])**3+int(str(i)[1])**3+int(str(i)[2])**3==i:   #数值111，不能直接[]，要先转为字符串提出来
#             print(i,end="\t")   #tab键会一起输出 153	370	371	407
# ins()








#22、 定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
#数组中的每个元素值不允许超过 100，但是可以等于100，
#如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
#删除所有重复元素，使得每个元素只出现一次
#按照数字的大小，由高到低排序返回

# def ins(a:list):
#     b=[]
#     for i in a:
#         if (i not in b) and (i<=100):
#             b.append(i)
#     print(sorted(b[:100],reverse=True))     #最多显示100个，不打了
#
# a = [random.randint(1,101) for j in range(111)]
# ins(a)
# print(len(a))

#23、定义函数，打印用户传入的容器类型和数据长度
# def ins(a):
#     if isinstance(a,dict):
#         return f"传入的类型为字典dict，长度：{len(a)}"
#     elif isinstance(a,list):
#         return len(a)
#     elif isinstance(a,tuple):
#         return len(a)
#     elif isinstance(a,str):
#         return len(a)
#     elif isinstance(a,int):
#         return len(str(a))   #int数值型不能直接len计算，先转成字符串
#     elif isinstance(a,set):
#         return len(a)
#
# print(ins({"name": "suki"}))
# print(ins([1, 2, 3, 4, 5]))
# print(ins((11, 223, 44, 55)))
# print(ins("asda"))
# print(ins(1111))
# print(ins({1, 2, 3, 123}))



#24、定义函数 generateNum( )
# def generateNum():
#     return 11111111

#25、定义函数 moreThan(num)，判断输入的数字是否大于1500
# def moreThan(num):
#     print(type(num))
#     if num>1500:
#         print(f"输入的{num}大于1500")
#     else:
#         print(f"输入的{num}小于1500")
# moreThan(12.2)   #直接打默认传入数值型



#26、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和(全部数的平方之和)
# def ins(a,b)->int:   #删
#     c=0
#     if a>=b:
#         max_01=a
#         min_01=b
#     if a<b:
#         max_01=b
#         min_01=a
#     for i in range(min_01,max_01+1):
#         if i>0 and (i**0.5)*(i**0.5)==i:
#             c=c+i
#     print(c)

# ins(1,5)



# def ins(a,b):    #本题看这
#     sum=0
#     for i in range(a,b+1):
#         sum=sum+i**2
#     return sum
# print(ins(1,5))






# 27、写函数，检查传入字典的每一个value长度，如果大于2
# 那么仅保留前两个长度的内容， 并将新内容返回给调用者
# def ins(a:dict)->dict:
#
#     for key,value in a.items():
#         if len(value)>2 :
#             a[key]=value[:2]
#
#     return a
#
# print(ins({"name": "张", "address": "beijing"}))

 
 
 
#28、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
# def ins(a):
#     if isinstance(a,str):
#         if a:               #判断的是布尔值，直接这样判断会返回True
#             return f"传入的是字符串{a}，不为空"    #if True则执行这句话
#         else:
#             return f"传入的是字符串{a}，为空"
#     elif isinstance(a,list):
#         if a:
#             return f"传入的是列表{a}，不为空"
#         else:
#             return f"传入的是列表{a}，为空"
#     elif isinstance(a,tuple):
#         if a:
#             return f"传入的是元组{a}，不为空"
#         else:
#             return f"传入的是元组{a}，为空"
#
# print(ins(""))
# print(ins("1"))
# print(ins([]))
# print(ins([1]))
# print(ins(()))
# print(ins((1,)))







#29、编写自定义函数，完成一个简单的减法运算函数
# def ins(a,b):
#     print(a-b)
# ins(2,3)

#30、编写自定义函数，可以输出自己的名字即可。
# def ins():
#     print("张三")
# ins()


#31、编写自定义函数：剪刀石头布
#游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
#当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
#当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
#1 代表剪刀 2 代表石头 3 代表布
# def ins():
#     user=100
#     computer=100
#     while True:
#         a=random.randint(1,3)
#         if user==0:
#             print(f"用户分数：{user}，游戏结束，用户输，电脑人机分数：{computer}")
#             break
#         if computer==0:
#             print(f"用户分数：{user}，游戏结束，用户胜，电脑人机分数：{computer}")
#             break
#
#         b=int(input("请输入你的选择：1、剪刀 2、石头 3、布："))
#         if a==1 and b==1:
#             print(f"平局，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==1 and b==2:
#             user=user+10
#             computer=computer-10
#             print(f"用户赢，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==1 and b==3:
#             user = user - 10
#             computer = computer + 10
#             print(f"用户输，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==2 and b==1:
#             user = user - 10
#             computer = computer + 10
#             print(f"用户输，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==2 and b==2:
#             print(f"平局，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==2 and b==3:
#             user = user + 10
#             computer = computer - 10
#             print(f"用户赢，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==3 and b==1:
#             ser = user + 10
#             computer = computer - 10
#             print(f"用户赢，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==3 and b==2:
#             user = user - 10
#             computer = computer + 10
#             print(f"用户输，用户分数：{user}，电脑人机分数：{computer}")
#         elif a==3 and b==3:
#             print(f"平局，用户分数：{user}，电脑人机分数：{computer}")
#
#
# ins()


























#32、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# def ins(a:str)->str:
#     return a[::-1]
# print(ins("helloworld"))


#33、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# def ins(a:list):
#     num=[]
#     for i in a:
#         if i%2==0:
#             num.append(i)
#     return num
# print(ins([-2,0,4,5,6.5]))





#34、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
# def ins(a:list)->str:     #相同长度呢？
#     b=a[0]
#     for i in a:
#         if len(i)>len(b):
#             b=i
#     return b
# print(ins(["helloworld","name"]))


#35、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方和
# def ins(a:list):
#     b=0
#     for i in a:
#         b=i**2+b
#     return b
#
# print(ins([1,2,3]))

#36、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# def ins(a:str)->str:
#     b=a.split()
#     print(b)
#     c=""
#     for i in b:
#         c=c+i.capitalize()+" "
#     print(c)
#
# ins("asd asd qwe poi asd qwe test jmeter postman")


#37、编写一个函数，接受两个列表作为参数，并返回两个列表的交集
#举例：
# list1 = [100,200,300,454]
# list2 = [454,789,125,46]
#返回：[454]

# def ins(list1:list,list2:list)->list:
#     return list(set(list1)&set(list2))
#
# print(ins([1,2,3,4],[1,2,5,6]))

# def ins():
#     if len(list1)==len(list2):
#         for i in range(len(list1)):
#             if list2[i] in list1:
#                 print(list2[i])

#38、定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市
# def enroll(name:str,sex:str,age:int,address:str):
#     print(f"姓名：{name}，性别：{sex}，年龄：{age}，城市：{address}")
#
# enroll("张三","男",18,"沈阳")





















